<?php
/**
 * チームメンバー追加編集コンポーネントクラス
 * Enter description here ...
 * @author shinichi
 *
 */
require_once dirname(__FILE__) . '/Mapper.php';
require_once dirname(__FILE__) . '/../AgeRadiobutton/AgeRadiobutton.php';
require_once dirname(__FILE__) . '/../Components.php';
require_once 'Smarty/Components/hidden.php';
require_once 'Smarty/Components/select.php';

class Components_MemberEdit extends Components
{
	/** テンプレートファイル名 */
	const TEMPLATE_NAME ='MemberEdit.tpl';
	/** 年齢選択ラジオボタンネーム */
	//削除予定　const NAME_AGE = 'AGE';

	/** サブミットボタンネーム */
	const NAME_SUBMITBUTTON = 'subtype';
	/** サブミットボタンバリュー：変更 */
	const VALUE_SUBMITBUTTON_UPDATE = '変更';
	/** サブミットボタンバリュー：削除 */
	const VALUE_SUBMITBUTTON_DELETE = '削除';
	/** サブミットボタンバリュー：追加 */
	const VALUE_SUBMITBUTTON_APPEND = '追加';

	/** @var $_objMapper  データマッパー*/
	protected $_objMapper;
	/** @var $_objComponentAgeRadio 学年選択ラジオボタン*/
	protected $_objComponentAgeRadio;
	/** @var $_objComponentHidden HIDDEN */
	protected $_objComponentHidden;
	/** @var $_objComponentAgeSelect 学年選択メニュー */
	protected $_objComponentAgeSelect;

	/**
	 * コンストラクタ
	 * Enter description here ...
	 * @param $sCompileId 中間ファイルプレフィックス
	 * @param $KindSchol 学校種別
	 * @param $sSubmitAction サブミット時の遷移先
	 */
	public function __construct($sCompileId, $KindSchol, $sSubmitAction)
	{
		parent::__construct(dirname(__FILE__), $sCompileId);
		$this->_objMapper = new Components_MemberEdit_Mapper($KindSchol);
		$this->_initAgeRadiobuttonClass($KindSchol);
		$this->_initMemberHidden();
		$this->_initAgeSelect($KindSchol);
		$this->view->FORM_ACTION = $sSubmitAction;
	}

	public function fetch()
	{
		$this->view->RADIO_AGE = $this->_objComponentAgeRadio->fetch();
		$this->view->aryDatasetMember
		= $this->_objMapper->aryPlayerList;
		$this->view->HIDDEN = $this->_objComponentHidden->fetch();
		$this->view->AGE_MENU = $this->_objComponentAgeSelect->fetch();
		$sHtml = parent::fetch(self::TEMPLATE_NAME);
		return $sHtml;
	}

	/**
	 * 学年選択メニュー初期化
	 */
	protected function _initAgeSelect($KindSchol)
	{
		$this->_objComponentAgeSelect
		= new Smarty_Components_Select(
			$this->_sCompileDir,
			$this->_sCompileId,
			Components_MemberEdit_Mapper::HTTP_REQUEST_KEY_AGE,
			$this->_initAgeOptions($KindSchol)
		);
	}

	/**
	* 学年選択チェックボックスコンポーネントクラス初期化
	*/
	protected function _initAgeRadiobuttonClass($KindSchol)
	{
		/** クッキークラス：学年選択状態初期化 */
		$this->_initAgeCookie();
		/** ラジオボタンコンポーネントクラス */
		$this->_objComponentAgeRadio
		= new SmartyComponents_Radio(
			$this->_sCompileDir,
			$this->_sCompileId,
			Components_MemberEdit_Mapper::HTTP_REQUEST_KEY_AGE
		);
		$this->setAgeOptions($KindSchol);
		$this->_objComponentAgeRadio->sSeparator = ' ';
		$this->_objComponentAgeRadio->onClick ='changeAge' . '(this);';
		$this->_setAgeSelected();
	}

	/**
	 * メンバーフォームに設定するＨＩＤＤＥＮ
	 * Enter description here ...
	 */
	protected function _initMemberHidden()
	{
		$this->_objComponentHidden = new SmartyComponents_Hidden($this->_sCompileDir, $this->_sCompileId);
		$this->_objComponentHidden->addInfo(Components_MemberEdit_Mapper::HTTP_REQUEST_KEY_AGE, $_REQUEST[Components_MemberEdit_Mapper::HTTP_REQUEST_KEY_AGE]);
	}

	/**
	* 学年選択状態保存クッキークラス初期化
	* Enter description here ...
	*/
	protected function _initAgeCookie()
	{
		$this->_objCookieAge = new Lib_Cookie_Name(Components_MemberEdit_Mapper::NAME_COOKIE_AGE, 12);
	}

	/**
	* 学年選択オプション設定
	* Enter description here ...
	* @param unknown_type $aryAgeOptions
	*/
	public function setAgeOptions($KindSchol)
	{
		$this->_objComponentAgeRadio->aryOptions
		= $this->_initAgeOptions($KindSchol);
	}
	/**
	* 学年選択オプション設定
	* Enter description here ...
	* @param unknown_type $Kind
	*/
	protected function _initAgeOptions($SchoolKind)
	{
		$aryAgeOptions = array();
		switch	($SchoolKind) {
			case Models_Players_Controller::JUNIOR_SCHOOL:
				$aryAgeOptions
				= array(
						'U7'=>'１年生',
						'U8'=>'２年生',
						'U9'=>'３年生',
						'U10'=>'４年生',
						'U11'=>'５年生',
						'U12'=>'６年生',
				);
				break;
			case Models_Players_Controller::MIDDLE_SCHOOL:
				$aryAgeOptions
				= array(
						'U13'=>'１年生',
						'U14'=>'２年生',
						'U15'=>'３年生',
				);
				break;
			case Models_Players_Controller::HIGH_SCHOOL:
				$aryAgeOptions
				= array(
						'U16'=>'１年生',
						'U17'=>'２年生',
						'U18'=>'３年生',
				);
				break;
		}
		return $aryAgeOptions;
	}

	/**
	* Requestにより学年の選択状態を設定する
	* Requestに値が設定されていない場合、値を補完する
	*/
	protected function _setAgeSelected()
	{
		$SelectAgeList = $this->_objMapper->getCurrentAgeList();
		$this->setSelectedAgeOption($SelectAgeList[0]);
	}

	/**
	* 学年選択値設定
	* Enter description here ...
	* @param unknown_type $sSelectedValue
	*/
	public function setSelectedAgeOption($sSelectedValue)
	{
		$this->_objComponentAgeRadio->sSelected = $sSelectedValue;
	}
}